package _03ArrayList;

import java.util.*;

//	void ensureCapacity(int minCapacity) 
//		如有必要，增加此 ArrayList 实例的容量，以确保它至少能够容纳最小容量参数所指定的元素数。

//	void trimToSize() 
//		将此 ArrayList 实例的容量调整为列表的当前大小。

public class ArrayListDemo {

	public static void main(String[] args) {

		// ArrayList 实现了List Collection 接口

		// *内部是使用数组实现
		// *数组初始大小是10
		// *如果容量不够按照1.5倍大小扩容
		// 10 >15 15*1.5
		// 扩容 复制到一个新的大小为1.5倍的数组中去

		// 跟她相似的一个实现类 Vector（线程安全类）

		// 内部使用数组实现
		final int Size = 100000;
		// 两种创建、定义大小方式
		ArrayList<Integer> l1 = new ArrayList<Integer>(Size);

		ArrayList<Integer> l2 = new ArrayList<Integer>();
		l2.ensureCapacity(Size);

		// (Size);
		Calendar c1 = Calendar.getInstance();
		for (int i = 1; i < Size; i++) {
			l1.add(i);
		}
		Calendar c2 = Calendar.getInstance();
		System.out.println(c2.getTimeInMillis() - c1.getTimeInMillis());

		// ensureCapacity
		Calendar c3 = Calendar.getInstance();
		for (int i = 1; i < Size; i++) {
			l2.add(i);
		}
		Calendar c4 = Calendar.getInstance();
		System.out.println(c4.getTimeInMillis() - c3.getTimeInMillis());

		// 实例的容量调整为列表的当前大小
		l1.trimToSize();
		l2.trimToSize();

	}

}
